#ifndef JSON_DATA_HPP
#define JSON_DATA_HPP
#include <jsoncpp/json/json.h>
#include <string>
#include <cstring>
#include <iostream>
class JsonData_sensor_convert
{
    public:
      JsonData_sensor_convert(){}
      ~JsonData_sensor_convert(){}
    //example
    // double seatx,seaty,seatz;
    // int count;
    // std::string name;  
    std::string json_msg;
    double distance_up,distance_down;
    double dis_L,dis_R,dis_F,dis_B;
    int motor_cur_speed,motor_set_speed;
    int key_value=0;
    int cmd_value=0;
    int cmd_status=0;
    void receive_msg(std::string &msg);
    void set_json_msg(void);
    int receive_cmd_zhua(std::string &msg);
};
int JsonData_sensor_convert::receive_cmd_zhua(std::string &msg)
{
   int rett=0;
     Json::Reader reader;
     Json::Value json_val;
     if(reader.parse(msg, json_val))
     {
      rett=json_val["cmd_value"].asInt();
     }
     return rett;
}
void JsonData_sensor_convert::receive_msg(std::string &msg)
{
     Json::Reader reader;
     Json::Value json_val;
     if(reader.parse(msg, json_val))
     {
        
        // key_value = json_val["key_value"].asInt();
        // cmd_value = json_val["cmd_value"].asInt();
          // 判断key_value是否存在并处理
        if (json_val.isMember("key_value") && json_val["key_value"].isInt())
        {
            key_value = json_val["key_value"].asInt();
        }
        else
        {
            // 处理key_value不存在或类型不是int的情况（例如设默认值、打日志等）
            key_value = 0; // 示例：设默认值
        }

        // 判断cmd_value是否存在并处理
        // if (json_val.isMember("cmd_value"))
        // {
        //     // 存在该键，进一步判断是否为int类型（可选，视需求而定）
        //     if (json_val["cmd_value"].isInt())
        //     {
        //         cmd_value = json_val["cmd_value"].asInt();
        //     }
        //     else
        //     {
        //         // 键存在但类型不是int（例如是字符串、浮点数等），处理错误
        //         cmd_value = 0; // 示例：用特殊值标记错误
        //     }
        // }
        // else
        // {
        //     // 键不存在，处理逻辑（例如设默认值、报错等）
        //     cmd_value = 0; // 示例：用特殊值标记不存在
        // }
     }
}
void JsonData_sensor_convert::set_json_msg(void)
{
    Json::Value json_val;
        json_val["motor_cur_speed"] = motor_cur_speed;
        json_val["distance_up"] = distance_up;
        json_val["distance_down"] = distance_down;
        json_val["dis_L"] = dis_L;
        json_val["dis_R"] = dis_R;
        json_val["dis_F"] = dis_F;
        json_val["dis_B"] = dis_B;
        // json_val["seatx"] = seatx;
        // json_val["seaty"] = seaty;
        // json_val["seatz"] = seatz;
        // json_val["name"] = name;
        json_msg = json_val.toStyledString();
}

#endif